#!/usr/bin/perl -w # for syntax highlighting
package clreqd_modules;

#########################################################################
# This rountine returns a local copy of the custom application probe	#
# # script. It is returned as hex-encoded data.				#
#									#
# Arguments are:							#
# appname text								#
# appname - the name of the application.				#
# text - set to 1 or yes to get decoded text.				#
#									#
# Returns:								#
# OK\nDATA - record returned as requested.				#
# ERROR msg - an error has occured - see 'msg'.				#
# NO_PROBE - specified record does not exist.				#
#########################################################################

use cldb;
use Data::Dumper;
use clutils qw(to_bool);

sub get_custom_probe_info {
my %ARGS=@_;
my $f;

	my $text=$ARGS{TEXT} if exists($ARGS{TEXT});
	if(defined($text)) {
		$text=to_bool($text);
	} else {
		$text=0;
	}
	my $appname=$ARGS{APPNAME} if exists($ARGS{APPNAME});
	my $name=$ARGS{NAME};

	#################################################################
	# Open up the database to get hold of the data.			#
	#################################################################

	if(! -f "$::ENV{TRUECL_CFG}/config.db") {
		return("ERROR Failed to find database '$::ENV{TRUECL_CFG}/config.db'!");
	}

	#################################################################
	# Database does exist, so open it up ready for changing.	#
	#################################################################

	my $db=new cldb("$::ENV{TRUECL_CFG}/config.db");
	if(!defined($db)) {
		return("ERROR Unable to open database 'config.db':\n" . cldb::error);
	}
	::msg("Opened database connection to '$::ENV{TRUECL_CFG}/config.db'.");

	#################################################################
	# Ensure the table exists and abort if not.			#
	#################################################################

	if(! $db->exists("table","custom_app_probes")) {
		return("ERROR Config database missing 'custom_app_probes' table.");
	}

	#################################################################
	# Now get hold of the record - if it exists.			#
	#################################################################

	my $s="SELECT * FROM custom_app_probes WHERE name = '$appname'";
	my $res=$db->get_rows($s);
	if(!defined($res) || !defined($res->[0]->{script})) {
		return "NO_PROBE";
	}

	#################################################################
	# Return the data we have.					#
	#################################################################
	my $d=$res->[0]->{script};
	if(!defined($d)) {
		$d="";
	} else {
		if($text==1) {
			$d=pack("h*",$d);
		}
	}

	$db->disconnect; $db=undef;
	return "OK\n$d";
}

1;
